﻿using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;

namespace Fast.ConfigureOptions
{
    /// <summary>
    /// 配置选项泛型接口
    /// </summary>
    /// <typeparam name="TOptions"></typeparam>
    /// <typeparam name="TOptionsValidation"></typeparam>
    public interface IConfigureOptions<TOptions, TOptionsValidation> : IConfigureOptions<TOptions>
        where TOptions : class, IConfigureOptions
        where TOptionsValidation : class, IValidateOptions<TOptions>
    {
    }
    /// <summary>
    /// 配置选项泛型接口
    /// </summary>
    /// <typeparam name="TOptions"></typeparam>
    public interface IConfigureOptions<TOptions> : IConfigureOptions
        where TOptions : class, IConfigureOptions
    {
        /// <summary>
        /// 选项后期配置
        /// </summary>
        /// <param name="options"></param>
        /// <param name="configuration"></param>
        void PostConfigure(TOptions options, IConfiguration configuration);
    }
    /// <summary>
    /// 配置选项接口
    /// </summary>
    public interface IConfigureOptions
    {

    }
}
